宣告式的渲染則是利用data的方式,集中管理資料,再將資料呈現在畫面,一但創建綁定了,
DOM將與data保持同步,當data中有修改,DOM會相應更新,這樣一來就是直接修改到data的資料,與DOM的更新分離開來更容易理解與撰寫
View
畫面ViewModel
資料繫結器Model
資料狀態Model
有任何資料的改變,ViewModel
會自動把資料綁定,渲染到View
畫面上
何謂漸進式框架,在網路上找到的資源解釋
Single-File Component(也稱為.vue檔案,縮寫為SFC)的類似HTML的檔案格式編寫Vue元件。將元件的邏輯(JavaScript)、模板(HTML)和樣式(CSS)封裝在一個<template>
中。
Vue SFC 是一種特訂的框架格式,需要由@vue/compiler-sfc
預編譯成瀏覽器懂的JavaScript\CSS
,使用方式為import導入使用
CSS 在SFC開發過程中使用<style>
標籤import
使用,並支援熱加載,在最後build
出來會被合併到一份CSS的檔案中。
關注點議題:
將html、css、JavaScript 放在同一份文件中提高更高的維護性,但同時也可以使用Src import
的方式將JavaScript、CSS分別單獨開發再引入使用
<Style Scoped>
使用當<Style>
標籤帶有scoped
屬性時,這份CSS就只屬於當前的元件中使用。在element
中開啟時會發現每一個標籤後方都被加入了獨一無二的名稱(using PostCSS)。
使用注意
CSS
:global
<style>
/* global styles */
</style>
<style scoped>
/* local styles */
/* using global styles rather created style */
:global(.red) {
color: red;
}
</style>
scoped
的CSS
父組件不會與其子組件的樣式互相影響,但子組件還是會受到父組件的切版設計影響樣式。>>>
):但sass
不被正常解析,改用/deep/
or::v-deep
組合符號,也有相同作用。<style scoped>
.a::v-deep .b { /* ... */ }
</style>
<style scoped>
.a /deep/ .b { /* ... */ }
</style>
<slot />
默認是不受作用域樣式影響,因為樣式應該是由父組件來的,所以在使用上應該為使用:slotted
<style scoped>
:slotted(div) {
color: red;
}
</style>
CSS Modules 樣式寫法:
<style module>
.red {
color: red;
}
</style>
<!-- 自定義名稱使用 -->
<style module="classes">
.red {
color: red;
}
</style>
<template>
<p :class="$style.red">This should be red</p>
</template>
<!-- 字定義名稱 -->
<!-- 就無須使用$style來取得樣式 -->
<template>
<p :class="classes.red">red</p>
</template>
import { useCssModule } from 'vue'
// inside setup() scope...
// default, returns classes for <style module>
useCssModule()
// named, returns classes for <style module="classes">
useCssModule('classes')
<!-- <script setup>中使用,要使用{}括起來 -->
<script setup>
const theme = {
color: 'red'
}
</script>
<template>
<p>hello</p>
</template>
<style scoped>
p {
color: v-bind('theme.color');
}
</style>
當在編輯(模板、css時).vue文件時該組件中的實例都將被換入,不需要重新加載頁面,就可以看到頁面上被編輯的變化。
<vue-style-loader>
使用data、methods和mounted等選項物件定義元件的邏輯。由選項定義的屬性暴露this內部函式上,該函式指向元件。
缺點:是code的數量較多
優點:低複雜的情境仍然好用,對於物件導向程式設計開發者友善
相較於將各項邏輯分開的optionAPI,CompositionAPI 將處理特定的邏輯放在一塊
優點:好管理大型複雜專案
setup()
同時使用兩種API的方式,在現有的optionsAPI中撰寫新功能時使用CompositionAPI的方式合併使用